package com.settlement.system.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.settlement.system.common.base.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 淘宝账单
 * </p>
 *
 * @author huangrensen
 * @since 2023-08-05
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TbBill extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 入账时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime settlementTime;

    /**
     * 支付宝交易号
     */
    private String orderNo;

    /**
     * 支付宝流水号
     */
    private String flowNo;

    /**
     * 商户订单号
     */
    private String sellerNo;

    /**
     * 账务类型
     */
    private String settlementType;

    /**
     * 收入（+元）
     */
    private BigDecimal incomeAmount;

    /**
     * 支出（-元）
     */
    private BigDecimal payAmount;

    /**
     * 账户余额（元）
     */
    private BigDecimal balance;

    /**
     * 服务费（元）
     */
    private BigDecimal serviceAmount;

    /**
     * 支付渠道
     */
    private String channel;

    /**
     * 签约产品
     */
    private String signProduct;

    /**
     * 对方账户
     */
    private String buyAccount;

    /**
     * 对方名称
     */
    private String buyName;

    /**
     * 银行订单号
     */
    private String bankNo;

    /**
     * 商品名称
     */
    private String productName;

    /**
     * 备注
     */
    private String remark;

    /**
     * 业务基础订单号
     */
    private String businessBaseNo;

    /**
     * 业务订单号
     */
    private String businessNo;

    /**
     * 业务账单来源
     */
    private String businessBillSource;

    /**
     * 业务描述
     */
    private String businessRemark;

    /**
     * 付款备注
     */
    private String payRemark;

    /**
     * 关联核销单号
     */
    private String auditNo;

    /**
     * 账单月份
     */
    private String billMonth;

    private Long createBy;

    private LocalDateTime createTime;

    private Long updateBy;

    private LocalDateTime updateTime;

    @TableField(exist = false)
    private String tableName;

    // 所属平台
    private String platform;

    // 登录账号
    private String userName;

    // 店铺ID
    private Long storeId;

    // 店铺名称
    private String storeName;

    public static List<String> getDateColumn() {
        List<String> columnList = new ArrayList<>();
        columnList.add("payTime");
        columnList.add("lastUpdateTime");
        return columnList;
    }
}
